/* ## TITULO ##
*Curso: k2051
*Leg.: 139.675-4		Niro, Jose Alberto 
*Leg.: 140.928-1		Celestino, Leonardo
*Leg.: 139.277-3		Ojeda, Hernan Sixto
*Leg.: 122.517-0		Rosales, Yamila
*** Ultima Modificacion: 15/06/2014 
*
* ## DESCRIPCION ##
* Programa para sacar comentarios de un archivo. Recibe por entrada standard
* y devuelve por salida standard. Realizado con GOTO.
*/

#include <stdio.h>  /* putchar */

int main(void) {
    int c;

    goto Normal;

    Normal:
        switch( c= getchar() ) {
            case '/': 
                goto Barra;
            case '\'':
                putchar (c);
                goto ComillaSimple;
            case '\"':
                putchar (c);
                goto ComillaDoble;
			case '\\':
				goto Escape;
            case EOF:
                goto End;
            default:
                putchar (c);
                goto Normal;
        }
    
    Barra:
        switch( c= getchar() ) {
            case '*':
                goto Comentario;
            default:
                putchar ('/');
                putchar (c);
                goto Normal;
        }
    
    ComillaSimple:
        switch( c= getchar() ) {
            case '\'':
                putchar (c);
                goto Normal;
            default:
                putchar (c);
                goto ComillaSimple;
        }
    
    ComillaDoble:
        switch( c= getchar() ) {
            case '\"':
                putchar (c);
                goto Normal;
            default:
                putchar (c);
                goto ComillaDoble;
        }
    
    Asterisco:
        switch( c= getchar() ) {
            case '/':
                putchar (' '); 
                goto Normal;
            default:
                goto Comentario;
        }
    
    Comentario:
        switch( c= getchar() ) {
            case '*': 
                goto Asterisco;
            default:
                goto Comentario;
        }
    Escape:{
		c=getchar();
		putchar(' ');
		goto Normal;
		}
    End: 
        printf("\n### Fin de entrada ###\n");
        
        return 0;
}